package futbol.tacticas.concursantes.TacticaIre;

import futbol.tacticas.*;
import futbol.tacticas.concursantes.Tactica;

import java.awt.Color;
import java.awt.Point;
import java.util.Vector;

/**
 *
 * @author Ire
 */
public class TacticaIre implements Tactica {

//    Matriz 11x3 de valores jugador (x, y, fuerza)
    private int nValores[][] = {
        {-150, 0, 7}, // jugador 1
        {-140, -25, 8}, //jugador 2
        {-140, 25, 8}, //jugador 3
        {-95, -65, 6}, //jugador 4
        {-105, 65, 6}, //jugador 5
        {15, -30, 4}, //jugador 6
        {-10, 10, 7}, //jugador 7
        {75, -60, 6}, //jugador 8
        {50, 60, 8}, //jugador 9
        {65, 10, 6}, //jugador 10
        {100, -40, 3}, //jugador 11
    };

    /**   constructor TacticaIre2 */
    public TacticaIre() {
    }

    public Color getColor1() {
        return Color.PINK;
    }

    public Color getColor2() {
        return Color.PINK;
    }

    public Color getColorNumero() {
        return Color.WHITE;
    }

    public String getNombre() {
        return "Irene'sWapa F.C.";
    }

    public int getXInicial(int n) {
        return nValores[n][0];
    }

    public int getYInicial(int n) {
        return nValores[n][1];
    }

    public int getFuerza(int n) {
        return nValores[n][2];
    }

    public int buscaDiana(int posicion) {
        int x = (int) (Math.random() * 10 * posicion);
        return x % 30;

    }

    public Vector<Comando> getComandos(SituacionJugadores sj) {
        Vector<Comando> com = new Vector();

        Point bola = sj.getBola();
//         colocación inicial de los jugadores
        for (int i = 0; i < 11; i++) {
            com.add(new ComandoIrA(i, nValores[i][0], nValores[i][1]));
        }
//         jugador más cercano a la bola va a por ella
        int nJug = sj.getMasCercanoDeBola();
        com.add(new ComandoIrA(nJug, bola.getX(), bola.getY()));


        //  Pasar la pelota o tirar a puerta

        for (int i = 0; i < 11; i++) {
            Point mijugador[] = sj.getMisJugadores();
            if (mijugador[i].getX() < -100)
            {
                com.add(new ComandoTiroAPuerta(i, 0));
            } else if  (mijugador[i].getX() > 70)
            { 
                int diana = buscaDiana((int) mijugador[i].getY());
                com.add(new ComandoTiroAPuerta(i, diana));
            } else {             
                int siguienteJugador = sj.getSiguienteJugador(i);
                com.add(new ComandoPase(i, siguienteJugador + 10)); 
            }
            }

//  Defensa
        Point mijugador[] = sj.getMisJugadores();
        Point contrario[] = sj.getContrario();
        if (!sj.estoyMasCercaDeBola() || (bola.getX() < -80 && bola.getX() > -110)) {
            for (int i = 3; i < 5; i++) {
                int nJugadorContrario = sj.getContrarioMasCerca(getXInicial(i), getYInicial(i));
                com.add(new ComandoIrA(i, contrario[nJugadorContrario].getX() + 10, contrario[nJugadorContrario].getY()));
            }
        } else if (!sj.estoyMasCercaDeBola() || (bola.getX() < -110)) {
            for (int i = 1; i < 3; i++) {
                int nJugadorContrario = sj.getContrarioMasCerca(getXInicial(i), getYInicial(i));
                com.add(new ComandoIrA(i, contrario[nJugadorContrario].getX(), contrario[nJugadorContrario].getY()));
            }
        }

//        portero
        int y = (int) bola.getY();
        if (y < -40) {
            y = -15;
        }
        if (y > 40) {
            y = 15;
        }
        com.add(new ComandoIrA(0, nValores[0][0], y));
        return com;
    }
}
